package day14;

import java.util.ArrayList;
import java.util.List;

/*本类用于测试泛型的优点*/
public class TestGeneric1 {
    public static void main(String[] args) {
        /*1.泛型是怎么来的?--想要模仿数组数据类型检查*/
        //1.创建一个用来存放String类型数据的长度为5的数组s
        String[] s = new String[5];
        s[2] = "泡泡";
        s[4] = "涛涛";
        /*数组的好处:在编译时期就检查数据的类型,如果不是要求的类型编译器就报错*/
        //s[0] = 1;
        //s[1] = 2.2;
        //s[3] = 'a';
        /*2.泛型通常结合着集合一起使用*/
        List list = new ArrayList();//注意需要导包:import java.util.List;
        //没有泛型,数据类型根本没有约束 -- 太自由!!!
        list.add("江江");
        list.add(1);
        list.add(8.8);
        list.add('a');
        System.out.println(list);//通过list查看集合中的元素

        /*3.引入泛型-主要目的是想通过泛型来约束集合中元素的类型*/
        /*4.泛型的好处:可以把报错的时机提前,在编译器就报错,而不是运行后才抛出异常
        * 在向集合中添加元素时,会先检查元素的数据类型,不是要求的类型就编译失败*/
        List<String> list2 = new ArrayList<String>();
        list2.add("雷神");//约束了类型以后,只能传String类型
//        list2.add(1);
//        list2.add(3.5);
        /*5.<type> -- type的值应该如何写?
        * 需要查看要存放的数据类型是什么,依据类型来定义
        * 但是type必须是引用类型,不能是基本类型*/
        //List<int> list3 = new ArrayList<int>();
        List<Integer> list3 = new ArrayList<Integer>();
        list3.add(100);
        list3.add(200);
        System.out.println(list3);
    }
}
